home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2004 #2 / K-CD-2-2004.ISO / OpenOffice Sv / f_0397 / python-core-2.2.2 / lib / UserDict.py < prev    next >
Encoding:
Python Source  |  2003-07-18  |  2.0 KB  |  61 lines

  1. """A more or less complete user-defined wrapper around dictionary objects."""
  2.  
  3. class UserDict:
  4.     def __init__(self, dict=None):
  5.         self.data = {}
  6.         if dict is not None: self.update(dict)
  7.     def __repr__(self): return repr(self.data)
  8.     def __cmp__(self, dict):
  9.         if isinstance(dict, UserDict):
  10.             return cmp(self.data, dict.data)
  11.         else:
  12.             return cmp(self.data, dict)
  13.     def __len__(self): return len(self.data)
  14.     def __getitem__(self, key): return self.data[key]
  15.     def __setitem__(self, key, item): self.data[key] = item
  16.     def __delitem__(self, key): del self.data[key]
  17.     def clear(self): self.data.clear()
  18.     def copy(self):
  19.         if self.__class__ is UserDict:
  20.             return UserDict(self.data)
  21.         import copy
  22.         data = self.data
  23.         try:
  24.             self.data = {}
  25.             c = copy.copy(self)
  26.         finally:
  27.             self.data = data
  28.         c.update(self)
  29.         return c
  30.     def keys(self): return self.data.keys()
  31.     def items(self): return self.data.items()
  32.     def iteritems(self): return self.data.iteritems()
  33.     def iterkeys(self): return self.data.iterkeys()
  34.     def itervalues(self): return self.data.itervalues()
  35.     def values(self): return self.data.values()
  36.     def has_key(self, key): return self.data.has_key(key)
  37.     def update(self, dict):
  38.         if isinstance(dict, UserDict):
  39.             self.data.update(dict.data)
  40.         elif isinstance(dict, type(self.data)):
  41.             self.data.update(dict)
  42.         else:
  43.             for k, v in dict.items():
  44.                 self[k] = v
  45.     def get(self, key, failobj=None):
  46.         if not self.has_key(key):
  47.             return failobj
  48.         return self[key]
  49.     def setdefault(self, key, failobj=None):
  50.         if not self.has_key(key):
  51.             self[key] = failobj
  52.         return self[key]
  53.     def popitem(self):
  54.         return self.data.popitem()
  55.     def __contains__(self, key):
  56.         return key in self.data
  57.  
  58. class IterableUserDict(UserDict):
  59.     def __iter__(self):
  60.         return iter(self.data)
  61.